package com.company.zonghelizi.wangzhe;

import java.util.*;

/*
    List 的 练习
    1. 产生10个英雄Hero放到List里
    hero 有两个属性，一个名称，一个是血量
    血量是随机生成的整数100~200之间
    2. 找到血量最多的和最少的两个Hero
    3. 让血量最小的英雄去攻击血量最多的，造成50点的伤害
    4. 对该list进行按照血量降序排列
    5. 最后迭代该list ，依次打印Hero信息
    6. 把list里的所有英雄放到set里
    7. 从set里删除所有血量小于150的Hero
    8. 打印Hero信息
 */
class Ex {
    public static void main(String[] args) {
        List<Hero> list = new ArrayList<>();
        list.add(new Hero("坦克",boold()));
        list.add(new Hero("战士",boold()));
        list.add(new Hero("刺客",boold()));
        list.add(new Hero("射手",boold()));
        list.add(new Hero("辅助",boold()));
        Hero maxHero = Collections.max(list);
        Hero minHero = Collections.min(list);
//        minHero.attack(maxHero);
        list.get(list.indexOf(minHero)).attack(list.get(list.indexOf(maxHero)));
        // 降序
        Collections.sort(list,(x,y)->{return y.getBlood()-x.getBlood();});
        for (Hero h:list) {
            System.out.println(h.toString());
        }
        Set<Hero> set = new HashSet<>(list);
//        set.addAll(list);  // 也可以添加list到set
//        for(:){} 不能用foreach循环不能删除set集合里面的东西，迭代器是可以改变set里面的删除的
        Iterator<Hero> it = set.iterator();
        while(it.hasNext()){
            if(it.next().getBlood() < 150)
                it.remove();
        }
        System.out.println(set);

    }
    public static int boold(){
//        return (int)(Math.random()*101)+100;
        int a = (int)(Math.random()*101)+100;
        System.out.println(a);
        return a;
    }
}
public class Hero implements Comparable<Hero>{
    private String name;
    private int blood;

    public Hero(String name, int blood) {
        this.name = name;
        this.blood = blood;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getBlood() {
        return blood;
    }

    public void setBlood(int blood) {
        this.blood = blood;
    }

    public void attack(Hero hero){
        hero.setBlood(hero.getBlood()-50);
    }

    @Override
    public String toString() {
        return "Hero{" +
                "name='" + name + '\'' +
                ", blood=" + blood +
                '}';
    }
    @Override
    public int compareTo(Hero o) {
        return this.blood-o.getBlood();
    }
}
